Apache ANT-এর build.xml ফাইলটি একটি build script, যা প্রজেক্টের জন্য বিল্ড প্রক্রিয়া নির্ধারণ করে। এই ফাইলে আপনি কি কী কাজ করতে চান, যেমন কোড কম্পাইল করা, টেস্ট চালানো, প্যাকেজিং, ডিপ্লয়মেন্ট, এবং আরও অনেক কিছু—এ সবকিছু ডিফাইন করা হয়।
একটি ANT build ফাইল সাধারণত XML ফরম্যাটে লেখা হয় এবং এতে এক বা একাধিক target থাকে, যা বিভিন্ন কাজ সম্পন্ন করার জন্য ব্যবহৃত হয়।
<?xml version="1.0" encoding="UTF-8"?>
<project name="MyProject" default="compile" basedir=".">
<!-- Properties -->
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<!-- Initialization Target -->
<target name="init">
<mkdir dir="${build.dir}"/>
</target>
<!-- Compile Target -->
<target name="compile" depends="init">
<javac srcdir="${src.dir}" destdir="${build.dir}"/>
</target>
<!-- Clean Target -->
<target name="clean">
<delete dir="${build.dir}"/>
</target>
</project>
<project>
):name
: প্রজেক্টের নাম।default
: ডিফল্ট target যা ANT চালানোর সময় প্রথমে execute হয়।basedir
: প্রজেক্টের বেস ডিরেক্টরি (অথবা কাজের মূল ডিরেক্টরি) নির্দেশ করে।Property Elements (<property>
):
name
: প্রপার্টির নাম।value
: প্রপার্টির মান। এখানে আপনি ডিরেক্টরি বা অন্যান্য মান সংজ্ঞায়িত করতে পারেন।<property name="src.dir" value="src"/>
Target Elements (<target>
):
name
: target এর নাম। এটি একটি বিল্ড ইউনিট বা কাজ।depends
: কোন target গুলি আগে রান করতে হবে (dependency)।<javac>
: কোড কম্পাইল করার জন্য ব্যবহৃত একটি task।<mkdir>
: ডিরেক্টরি তৈরি করার জন্য ব্যবহৃত task।<delete>
: ফাইল বা ডিরেক্টরি মুছে ফেলার জন্য ব্যবহৃত task।উদাহরণ:
<target name="compile" depends="init">
<javac srcdir="${src.dir}" destdir="${build.dir}"/>
</target>
<javac>
: জাভা সোর্স কোড কম্পাইল করতে ব্যবহৃত task।<mkdir>
: নতুন ডিরেক্টরি তৈরি করতে ব্যবহৃত।<delete>
: ফাইল বা ডিরেক্টরি মুছে ফেলতে ব্যবহৃত।কোড কম্পাইল করা
<javac srcdir="src" destdir="build/classes"/>
ফাইল বা ডিরেক্টরি মুছে ফেলা
<delete file="build/classes/OldClass.class"/>
ফাইল কপি করা
<copy file="src/config.xml" todir="build/config"/>
একটি জিপ আর্কাইভ তৈরি করা
<zip destfile="build/project.zip">
<fileset dir="build"/>
</zip>
JUnit টেস্ট চালানো
<junit>
<test name="com.mycompany.MyTest"/>
</junit>
depends
অ্যাট্রিবিউট ব্যবহার করে একটি target এর উপর অন্য target এর নির্ভরতা সেট করতে পারেন। যেমন, compile
target, init
target-এর উপর নির্ভরশীল।শর্ত অনুযায়ী কাজ চালানো
ANT-এর মধ্যে if
বা unless
অ্যাট্রিবিউট ব্যবহার করে শর্তাধীন কাজও করতে পারেন। উদাহরণ:
<target name="compile" if="is.debug">
<javac debug="true" srcdir="${src.dir}" destdir="${build.dir}"/>
</target>
Apache ANT এর build.xml
ফাইল একটি XML ফরম্যাটে লেখা হয় এবং এটি ANT বিল্ড টুলের জন্য কনফিগারেশন ফাইল হিসেবে কাজ করে। build.xml
ফাইলে প্রজেক্ট বিল্ড করার জন্য বিভিন্ন টাস্ক, টার্গেট, প্রপার্টি এবং অন্যান্য নির্দেশাবলী সংজ্ঞায়িত করা হয়।
একটি সাধারণ build.xml
ফাইলের গঠন এবং এর কম্পোনেন্টগুলি নিচে ব্যাখ্যা করা হয়েছে।
build.xml
ফাইলের সাধারণ গঠন<?xml version="1.0" encoding="UTF-8"?>
<project name="ProjectName" default="default-target" basedir=".">
<!-- Properties -->
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="jar.name" value="myproject.jar"/>
<!-- Targets -->
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<target name="compile" depends="clean">
<mkdir dir="${build.dir}/classes"/>
<javac srcdir="${src.dir}" destdir="${build.dir}/classes"/>
</target>
<target name="jar" depends="compile">
<jar destfile="${build.dir}/${jar.name}" basedir="${build.dir}/classes"/>
</target>
<target name="default" depends="jar"/>
</project>
build.xml
ফাইলের কম্পোনেন্টগুলো<?xml version="1.0" encoding="UTF-8"?>
<project>
ট্যাগproject
ট্যাগটি মূলত ফাইলের রুট ট্যাগ হিসেবে কাজ করে।name
: প্রকল্পের নাম।default
: ডিফল্ট টার্গেট যেটি ant
কমান্ডের মাধ্যমে রান হবে।basedir
: প্রকল্পের বেস ডিরেক্টরি। এটি .
(বর্তমান ডিরেক্টরি) হিসেবে সেট করা থাকে, তবে আপনি অন্য কোনো ডিরেক্টরি নির্দিষ্ট করতে পারেন।<property>
ট্যাগproperty
ট্যাগগুলি পরিবর্তনশীল (properties) ডিফাইন করে যা অন্যান্য টাস্কে ব্যবহৃত হয়।name
: প্রপার্টির নাম।value
: প্রপার্টির মান।উদাহরণ:
<property name="src.dir" value="src"/>
<target>
ট্যাগtarget
ট্যাগগুলো হল সেই কার্যাবলী যা ANT টাস্ক হিসাবে রান হবে। প্রতিটি target
এক বা একাধিক টাস্ক ধারণ করে।name
: টার্গেটের নাম।depends
: অন্য কোন টার্গেটের উপর নির্ভরশীলতা (যদি থাকে)।উদাহরণ:
<target name="compile" depends="clean">
<mkdir dir="${build.dir}/classes"/>
<javac srcdir="${src.dir}" destdir="${build.dir}/classes"/>
</target>
compile
টার্গেটটি clean
টার্গেটের উপর নির্ভরশীল, অর্থাৎ clean
টার্গেট আগে রান হবে।উদাহরণ:
<javac>
: জাভা কোড কম্পাইল করার জন্য।<jar>
: জার ফাইল তৈরি করার জন্য।<mkdir>
: ডিরেক্টরি তৈরি করার জন্য।<delete>
: ফাইল বা ডিরেক্টরি মুছে ফেলার জন্য।উদাহরণ:
<javac srcdir="${src.dir}" destdir="${build.dir}/classes"/>
<jar destfile="${build.dir}/${jar.name}" basedir="${build.dir}/classes"/>
উদাহরণ:
<target name="compile" depends="clean">
build.xml
ফাইলের উদাহরণ<?xml version="1.0" encoding="UTF-8"?>
<project name="SampleProject" default="build" basedir=".">
<!-- Defining properties -->
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="jar.name" value="sample.jar"/>
<!-- Clean target -->
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<!-- Compile target -->
<target name="compile" depends="clean">
<mkdir dir="${build.dir}/classes"/>
<javac srcdir="${src.dir}" destdir="${build.dir}/classes"/>
</target>
<!-- Create JAR -->
<target name="jar" depends="compile">
<jar destfile="${build.dir}/${jar.name}" basedir="${build.dir}/classes"/>
</target>
<!-- Default target -->
<target name="build" depends="jar"/>
</project>
clean
টার্গেটের পরে src
ডিরেক্টরি থেকে জাভা কোড কম্পাইল করবে এবং build/classes
ডিরেক্টরিতে সংরক্ষণ করবে।compile
টার্গেটের পরে একটি জার ফাইল তৈরি করবে।jar
টার্গেট চালাবে।build.xml
ফাইলের মাধ্যমে আপনি আপনার প্রকল্পের বিল্ড প্রসেস কনফিগার এবং অটোমেট করতে পারেন।Apache ANT একটি powerful build automation tool যা সাধারণত Java প্রজেক্টগুলির জন্য ব্যবহৃত হয়। এটি XML ভিত্তিক ফাইল (build.xml) ব্যবহার করে বিল্ড কনফিগারেশন সংজ্ঞায়িত করে। ANT-এর মধ্যে তিনটি গুরুত্বপূর্ণ উপাদান রয়েছে, যা হল Project, Target, এবং Task। এই তিনটি উপাদান একসাথে কাজ করে build প্রক্রিয়া নির্ধারণে এবং কাস্টমাইজ করতে সাহায্য করে।
Project হল ANT-এর মূল উপাদান যা build ফাইলের মধ্যে সমস্ত টার্গেট ও টাস্ককে ধারণ করে। এটি একটি container যা টার্গেটের মধ্যে নির্দিষ্ট বিল্ড প্রক্রিয়া নির্দেশ করে।
<project name="MyProject" default="compile" basedir=".">
<!-- Project specific configurations go here -->
</project>
name
: প্রজেক্টের নাম।default
: ডিফল্ট টার্গেট, যা কোনো টার্গেট উল্লেখ না করলে চলবে।basedir
: প্রজেক্টের মূল ডিরেক্টরি। এটি সাধারণত প্রজেক্টের মূল ফোল্ডার নির্দেশ করে।Target হল একটি নির্দিষ্ট বিল্ড ধাপ বা কাজ, যা কার্যকর করতে হয়। প্রতিটি টার্গেটের মধ্যে এক বা একাধিক task থাকতে পারে। টার্গেটের মধ্যে নির্দেশিত কাজগুলি সম্পাদিত হবে।
compile
, clean
, test
ইত্যাদি।<target name="compile" depends="clean">
<javac srcdir="src" destdir="build"/>
</target>
<target name="clean">
<delete dir="build"/>
</target>
name
: টার্গেটের নাম যা আপনি কমান্ড লাইনে নির্দিষ্ট করে দিতে পারেন।depends
: নির্দিষ্ট করে যে টার্গেটটি অন্য কোনো টার্গেটের উপর নির্ভরশীল।Task হল একটি কাজ যা target এর মধ্যে কার্যকর করা হয়। এটি একটি নির্দিষ্ট কর্ম বা প্রক্রিয়া, যেমন ফাইল কপি করা, কম্পাইল করা, বা একটি জাভা ক্লাস তৈরি করা। ANT-এ built-in অনেক ধরনের task রয়েছে এবং আপনি আপনার প্রয়োজন অনুযায়ী কাস্টম টাস্কও তৈরি করতে পারেন।
<javac>
: জাভা সোর্স কোড কম্পাইল করা।<copy>
: ফাইল কপি করা।<delete>
: ফাইল বা ডিরেক্টরি মুছে ফেলা।<mkdir>
: ডিরেক্টরি তৈরি করা।<target name="compile">
<javac srcdir="src" destdir="build"/>
</target>
<target name="copy-files">
<copy file="source.txt" tofile="destination.txt"/>
</target>
src
, dest
, file
, tofile
ইত্যাদি।<project name="MyProject" default="build" basedir=".">
<!-- Clean Target -->
<target name="clean">
<delete dir="build"/>
</target>
<!-- Compile Target -->
<target name="compile" depends="clean">
<javac srcdir="src" destdir="build"/>
</target>
<!-- Build Target (default) -->
<target name="build" depends="compile">
<echo message="Build complete!"/>
</target>
</project>
ব্যাখ্যা:
build
ডিরেক্টরি মুছে ফেলে।clean
টার্গেটের পরে চালানো হয় এবং সোর্স কোড কম্পাইল করে।compile
টার্গেটের পরে চলে এবং বিল্ড সম্পন্ন হওয়ার পর একটি বার্তা প্রিন্ট করে।এগুলি একসাথে একটি পূর্ণাঙ্গ বিল্ড প্রক্রিয়া তৈরি করতে ব্যবহৃত হয় এবং ANT এর মধ্যে বিল্ড কনফিগারেশন খুবই শক্তিশালী এবং কাস্টমাইজযোগ্য।
Apache ANT একটি জনপ্রিয় বিল্ড টুল যা জাভা প্রজেক্টের জন্য ব্যবহৃত হয়। এটি কমান্ড লাইন থেকে পরিচালিত হয় এবং XML ফাইলের মাধ্যমে প্রজেক্টের বিল্ড প্রক্রিয়া পরিচালনা করে। ANT প্রজেক্টের build.xml ফাইলকে ব্যবহার করে বিভিন্ন ধরনের টাস্ক (যেমন কম্পাইল, প্যাকেজ, ক্লিন) সম্পাদন করা হয়।
এখানে আমরা ANT কমান্ড এবং ANT Build Lifecycle সম্পর্কে বিস্তারিত আলোচনা করব।
ANT এর সাথে কাজ করতে হলে কমান্ড লাইন থেকে বিভিন্ন কমান্ড ব্যবহার করতে হয়। এখানে কিছু মৌলিক ANT কমান্ড এবং তাদের ব্যাখ্যা দেওয়া হল:
ant
এটি সবচেয়ে সাধারণ ANT কমান্ড, যা build.xml
ফাইলের ডিফল্ট টার্গেট রান করে।
ব্যবহার:
ant
এটি চালানোর পর, ANT ডিফল্ট টার্গেটটি চালাবে, যদি build.xml
ফাইলে কোনো default
টার্গেট সেট করা থাকে।
ant <target-name>
কোনো নির্দিষ্ট টার্গেট চালানোর জন্য এই কমান্ড ব্যবহার করা হয়।
ব্যবহার:
ant compile
এটি build.xml
ফাইলে compile
নামক টার্গেটটি চালাবে।
ant -version
ANT এর ভার্সন দেখার জন্য ব্যবহার করা হয়।
ব্যবহার:
ant -version
এটি ANT এর বর্তমান ভার্সন দেখাবে।
ant -f <file-name>
যদি build.xml
ফাইলের নাম পরিবর্তন করা হয় বা অন্য নামের ফাইল ব্যবহার করতে চান, তাহলে -f
অপশন ব্যবহার করতে পারেন।
ব্যবহার:
ant -f custom-build.xml
এটি custom-build.xml
ফাইল থেকে বিল্ড প্রক্রিয়া চালাবে।
ant clean
এটি সাধারণত ডেভেলপারদের দ্বারা ব্যবহৃত হয় প্রকল্পের পূর্ববর্তী বিল্ড আউটপুট মুছে ফেলতে।
ব্যবহার:
ant clean
এটি build.xml
ফাইলে সংজ্ঞায়িত clean
টার্গেটটি চালাবে।
ant -D<property>=<value>
এই কমান্ড ব্যবহার করে আপনি ANT প্রপার্টি সেট করতে পারেন।
ব্যবহার:
ant -Denv=production
এটি env
প্রপার্টি এর মান production
সেট করবে এবং build.xml
ফাইলের মধ্যে সেই মান ব্যবহার করবে।
Apache ANT একটি বিল্ড লাইফসাইকেল অনুসরণ করে, যার মধ্যে বিভিন্ন ধাপে টাস্কগুলি সম্পাদিত হয়। ANT এর বিল্ড লাইফসাইকেল প্রধানত তিনটি ধাপে বিভক্ত:
init
(ইনিশিয়ালাইজেশন)এই ধাপে, প্রজেক্টের ইনিশিয়াল কনফিগারেশন সেট করা হয় এবং যে কোনো ডিরেক্টরি বা ফাইলের প্রাথমিক স্ট্রাকচার তৈরি করা হয়। উদাহরণস্বরূপ, বিল্ড ডিরেক্টরি তৈরি করা।
উদাহরণ:
<target name="init">
<mkdir dir="build"/>
</target>
compile
(কম্পাইলিং)এই ধাপে সোর্স কোড কম্পাইল করা হয়। যদি জাভা সোর্স কোড থাকে, তবে javac
টাস্ক ব্যবহার করা হয় কোড কম্পাইল করার জন্য।
উদাহরণ:
<target name="compile" depends="init">
<javac srcdir="src" destdir="build/classes"/>
</target>
test
(টেস্টিং)এই ধাপে কোডে টেস্ট রান করা হয়। যদি JUnit টেস্ট থাকলে, junit
টাস্ক ব্যবহার করে টেস্ট চালানো হয়।
উদাহরণ:
<target name="test" depends="compile">
<junit>
<classpath>
<pathelement path="build/classes"/>
</classpath>
<test name="com.example.MyTest"/>
</junit>
</target>
package
(প্যাকেজিং)এই ধাপে, কোডকে একটি জার (JAR) বা ওয়্যার (WAR) ফাইলে প্যাকেজ করা হয়। এটি অ্যাপ্লিকেশন তৈরির জন্য প্রয়োজনীয় ফাইলগুলিকে একত্রিত করে।
উদাহরণ:
<target name="package" depends="compile">
<jar destfile="build/myapp.jar" basedir="build/classes"/>
</target>
deploy
(ডিপ্লয়মেন্ট)এই ধাপে প্যাকেজ করা অ্যাপ্লিকেশন সার্ভারে বা ডেস্টিনেশন সিস্টেমে ডিপ্লয় করা হয়।
উদাহরণ:
<target name="deploy" depends="package">
<copy file="build/myapp.jar" todir="/path/to/deployment"/>
</target>
clean
(ক্লিনিং)এই ধাপে, আগের বিল্ড আউটপুট এবং অস্থায়ী ফাইলগুলি মুছে ফেলা হয়, যাতে নতুন বিল্ডে কোনো সমস্যা না হয়।
উদাহরণ:
<target name="clean">
<delete dir="build"/>
</target>
ANT বিল্ড লাইফসাইকেল সাধারণত একটি ডিফল্ট সিরিজের টার্গেট দ্বারা পরিচালিত হয়। যখন আপনি ant
কমান্ডটি চালান, এটি build.xml
ফাইলে ডিফল্ট টার্গেট অনুসরণ করে। এটি এক বা একাধিক টার্গেটের উপর ভিত্তি করে কাজ করে। উদাহরণস্বরূপ:
clean
- আগের বিল্ড আউটপুট মুছে ফেলা হয়।init
- প্রাথমিক ডিরেক্টরি এবং ফাইল তৈরি করা হয়।compile
- সোর্স কোড কম্পাইল করা হয়।test
- টেস্ট রান করা হয়।package
- প্যাকেজ করা হয়।deploy
- অ্যাপ্লিকেশন ডিপ্লয় করা হয়।এটি নিশ্চিত করে যে প্রতিটি ধাপ সঠিকভাবে সম্পন্ন হয়েছে এবং প্রজেক্টের বিল্ড প্রক্রিয়া সুষ্ঠুভাবে চলে।
ant
, ant <target-name>
, ant clean
, ant -f <file>
ইত্যাদি।init
, compile
, test
, package
, deploy
, clean
।common.read_more